/*
* Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Part of Qt NFC Setting sample application.
*/

/*!
 * \file
 * \brief Declaration of the main() function for the Qt NFC
 * settings application.
 */

/*!
 * \file mainwindow.h
 * \brief Declaration of the main window widget class of the Qt NFC settings
 * application.
 *
 * This class is not documented in more detail here, as it was generated by Qt
 * Creator project wizard and has not been modified for this project.
 */

/*!
 * \mainpage Main page
 *
 * \section ref_introduction Introduction
 *
 * NFC Settings Application is a sample Qt application demonstrating how to
 * obtain information on whether a Symbian device supports Near Field
 * Communication (NFC) and what the current mode of operation is. The
 * application also shows how to detect NFC-capable devices that require a
 * firmware update to fully enable NFC features.
 *
 * This information is only available via native Symbian APIs. This example
 * provides a simple to use class with a Qt-like API including signals to
 * monitor changes to the relevant settings. The implementation details are
 * hidden using the private implementation design pattern.
 *
 * \section ref_compilation Compilation
 *
 * This example application is intended to be compiled with the Nokia Qt SDK 1.1
 * or newer. The project can be compiled either from the Qt Creator IDE or from
 * the command line.
 *
 * To compile the project from the command line in a Microsoft Windows
 * environment first open the Qt SDK Symbian^3 command prompt by selecting
 * All Programs > Qt SDK > Symbian^3 Qt 4.7.3 > Qt 4.7.3 for Symbian^3 Command
 * Prompt from the Start menu.
 *
 * Unpack the example application source code to a directory of your choosing on
 * the same drive where you installed the Nokia Qt SDK. In the command prompt
 * snippet below this directory is <code>C:\\Qt\\Projects\\nfcsettingsapplication</code>.
 *
 * After navigating to the directory containing the Qt project file
 * <code>nfcsettingsapplication.pro</code>, use the following commands to
 * compile the example application for the Symbian^3 device target and to create
 * a SIS installation package for deployment to a device:
 *
 * \code
 * C:\Qt\Projects\nfcsettingsapplication>qmake
 * C:\Qt\Projects\nfcsettingsapplication>make release-gcce
 * C:\Qt\Projects\nfcsettingsapplication>createpackage -g nfcsettingsapplication_template.pkg release-gcce
 * \endcode
 *
 * The GCCE compiler is very strict and produces compilation warnings from some
 * of the included Symbian system headers. These warnings can be safely ignored.
 *
 * Alternatively you can open the project file <code>nfcsettingsapplication.pro</code>
 * in the Qt Creator IDE, select the Symbian Device target and Release build
 * options and click the Build All button to compile the application.
 *
 * The application is compilable on platforms other than Symbian, e.g. for
 * desktop Qt. However, on non-Symbian platforms NFC is always reported as
 * not supported.
 *
 * \section ref_installation Installation
 *
 * To be able to install the provided application on a device you need to
 * have Nokia Ovi Suite installed on your development PC. With Nokia Ovi Suite
 * installed, the application can be installed by simply double clicking the
 * <code>nfcsettingsapplication.sis</code> installation file in Windows
 * Explorer. Follow the on-screen prompts to complete the installation and
 * launch nfcsettingsapplication from the Menu.
 *
 * If your device is connected to your development PC via USB, and you have
 * installed the Qt 4.7.3 for Symbian^3 and TRK Debug Agent packages that come
 * with the Nokia Qt SDK, it is also possible to install and run the application
 * from Qt Creator. Just select the Symbian Device target and Release build
 * options as in the compilation instructions above, but instead of clicking
 * Build All, click the Run button to compile and run the application on the
 * device.
 *
 * \section ref_usage Usage
 *
 * After launching the application on the device it will display the current
 * NFC mode. On devices that do not support NFC this will be "Not Supported".
 * In case any errors occur, these will be displayed at the bottom of the
 * screen just above the Exit button. In case of errors, you can try
 * reinitializing the application by tapping the "Reset" button.
 *
 * The application will keep monitoring the NFC mode for changes while it is
 * running. While the application is running, press the Menu key to send it to
 * the background and return to the home screen. Press the Menu key again and
 * select Settings > Connectivity > NFC to toggle the NFC radio on or off.
 * Press and hold the Menu key to bring nfcsettingsapplication to the
 * foreground. It will now display the changed status of the NFC mode.
 *
 * In case the application is run on a device that requires a firmware update to
 * fully support NFC features, the message "Update Firmware" is shown as the
 * "NFC Feature" status text. In practice this is only applicable to Nokia C7-00
 * devices with a firmware version earlier than the Symbian Anna release. For
 * other devices NFC features will be reported as "Not Supported" or
 * "Supported", depending on whether the device actually has NFC radio hardware.
 *
 * \section ref_known_issues Known Issues
 *
 * This example employs the private implementation design pattern for the
 * class NfcSettings. There are two private implementation classes, both
 * declared with the same name NfcSettingsPrivate, but in different header
 * files. This is typical for the private implementation design pattern.
 *
 * Since both implementation classes have identical names, they get combined
 * into a single documentation entry when generating HTML documentation from
 * the source code. For this reason the Doxygen configuration file excludes
 * the other private implementation:
 *
 * \code
 * 643: EXCLUDE = nfcsettings_p.cpp nfcsettings_p.h
 * 644: #EXCLUDE = nfcsettings_symbian_p.cpp nfcsettings_symbian_p.h
 * \endcode
 *
 * By default the documentation contains the Symbian private implementation
 * class. To see the HTML documentation for the default private implementation
 * class you need to comment out line 643 in <code>doxygen.config</code> using
 * the hash sign (\#) and remove the has sign from line 644. After this you can
 * regenerate the HTML documentation using the command:
 *
 * \code
 * doxygen doxygen.config
 * \endcode
 *
 * \section ref_history Version History
 *
 * \li 2011-06-06 Removed redundant main window layout that caused a warning to
 * to be issued to the debug output when running the application.
 * \li 2011-05-27 Added support for detecting devices for which NFC support is
 * available as a firmware update. Added support for recovering from transient
 * error situations.
 * \li 2011-05-18 Initial version with NFC feature check and radio on/off support.
 */

/*!
 * \fn int main(int argc, char *argv[])
 * \brief The <code>main()</code> function for the Qt NFC settings application.
 *
 * Constructs the main window of the application and starts the Qt event loop.
 */
int main(int argc, char *argv[]);
